package thread;

public class SyncDemo2 {
    public static void main(String[] args) {
        //Shop s = new Shop();
        Shop s1 = new Shop();
        Shop s2 = new Shop();
        Thread t1 = new Thread("范传奇") {
            @Override
            public void run() {
                //s.buy();
                s1.buy();
            }
        };
        Thread t2 = new Thread("王克晶") {
            @Override
            public void run() {
                //s.buy();
                s2.buy();
            }
        };
        t1.start();
        t2.start();
    }
}

class Shop {
    //public synchronized void buy(){ 在成员方法上使用synchronized之后，同步监视器对象不可选，就是this.
    public void buy() {
        try {
            Thread t = Thread.currentThread();
            System.out.println(t.getName() + "正在挑衣服");
            Thread.sleep(5000);
           // synchronized (new Object()) {     不是同一个对象
            synchronized (this){
            //synchronized ("Hello"){// 进的不是同一个店，却还要排队，不是一个合适的锁对象
                System.out.println(t.getName() + "正在试衣服");
                Thread.sleep(5000);
            System.out.println(t.getName() + "结账离开");}

        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Thread.yield();
    }


}